Identifying a contact based on a voice communication session

ABSTRACT

Arrangements described herein include identifying a voice communication session established between a first communication device and a second communication device and, based on the voice communication session established between the first communication device and the second communication device, identifying a plurality of contacts who potentially may be the second user. A list including at least a name of each of the plurality of contacts who potentially may be the second user is presented to a first user using the first communication device.

BACKGROUND

Arrangements described herein relate to voice communications and, moreparticularly, to identifying a contact based on a voice communicationsession.

Caller identification (caller ID), is a telephone service that transmitsa caller's telephone number to the called party's telephone equipmentduring the ringing signal, or when the call is being set up but beforethe call is answered. Where available, a caller ID sometimes alsoprovides a name associated with the calling telephone number, thoughthis name is not necessarily the name of the person actually placing thecall. Instead, it is the name of the person to whom the callingtelephone number is assigned. Thus, if a caller uses another person'sphone to place a call, the name presented by the caller ID will notindicate the actual caller. Also, sometimes caller IDs are blocked.

BRIEF SUMMARY

One or more embodiments disclosed within this specification relate tovoice communications and, more particularly, to identifying a contactbased on a voice communication session.

A computer program product includes a computer-readable storage mediumhaving program code stored thereon. The program code is executable by aprocessor to perform a method. The method can include identifying, usingthe processor, a voice communication session established between a firstcommunication device and a second communication device and, based on thevoice communication session established between the first communicationdevice and the second communication device, using the processor,identifying a plurality of contacts who potentially may be the seconduser. A list including at least a name of each of the plurality ofcontacts who potentially may be the second user is presented, using theprocessor, to a first user using the first communication device.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a system for identifying acontact based on an incoming call in accordance with one embodimentdisclosed within this specification.

FIG. 2 depicts views presented by a user interface of a communicationdevice in accordance with one embodiment disclosed within thisspecification.

FIG. 3 is a flow chart illustrating a method of identifying a contactbased on an incoming call in accordance with another embodimentdisclosed within this specification.

FIG. 4 is a block diagram of a communication device in accordance withone embodiment disclosed within this specification.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer-readablemedium(s) having computer-readable program code embodied, e.g., stored,thereon.

Any combination of one or more computer-readable medium(s) may beutilized. The computer-readable medium may be a computer-readable signalmedium or a computer-readable storage medium. A computer-readablestorage medium may be, for example, but is not limited to, anelectronic, magnetic, optical, electromagnetic, infrared, orsemiconductor system, apparatus, or device, or any suitable combinationof the foregoing. More specific examples (a non-exhaustive list) of thecomputer-readable storage medium would include the following: anelectrical connection having one or more wires, a portable computerdiskette, a hard disk drive (HDD), a solid state drive (SSD), a randomaccess memory (RAM), a read-only memory (ROM), an erasable programmableread-only memory (EPROM or Flash memory), an optical fiber, a portablecompact disc read-only memory (CD-ROM), a digital versatile disc (DVD),an optical storage device, a magnetic storage device, or any suitablecombination of the foregoing. As defined herein, the term“computer-readable storage medium” means a tangible storage medium thatcontains or stores program code for use by or in connection with aninstruction execution system, apparatus, or device.

A computer-readable signal medium may include a propagated data signalwith computer-readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer-readable signal medium may be any computer-readable medium thatis not a computer-readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer-readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber, cable, RF, etc., or any suitable combination ofthe foregoing. Computer program code for carrying out operations foraspects of the present invention may be written in any combination ofone or more programming languages, including an object orientedprogramming language such as Java™, Smalltalk, C++ or the like andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The program codemay execute entirely on the user's computer, partly on the user'scomputer, as a stand-alone software package, partly on the user'scomputer and partly on a remote computer, or entirely on the remotecomputer or server. In the latter scenario, the remote computer may beconnected to the user's computer through any type of network, includinga local area network (LAN) or a wide area network (WAN), or theconnection may be made to an external computer (for example, through theInternet using an Internet Service Provider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer, other programmable data processing apparatus,or other devices create means for implementing the functions/actsspecified in the flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in acomputer-readable medium that can direct a computer, other programmabledata processing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer-readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

For purposes of simplicity and clarity of illustration, elements shownin the figures have not necessarily been drawn to scale. For example,the dimensions of some of the elements may be exaggerated relative toother elements for clarity. Further, where considered appropriate,reference numbers are repeated among the figures to indicatecorresponding, analogous, or like features.

Arrangements described herein relate to facilitating, for a first user,identification of a second user in a voice communication session. Basedon the communication session, a list including the names of the contactswho potentially may be the second user can be presented to a first user.Moreover, the list also can include a confidence score for each contactin the list. Each confidence score can indicate a level of confidencefor each respective contact that the contact is the second user. Thefirst user can select a name of a contact from the list, and thatcontact can be automatically added to the first user's contact list.Further, the first user can be provided one or more options connectwith, or follow, a selected contact in a social network.

FIG. 1 is a block diagram illustrating a system 100 for identifying acontact based on an incoming call in accordance with one embodimentdisclosed within this specification. The system 100 can include a firstcommunication device 110 and a second communication device 112. Thecommunication devices 110, 112 can be telephones, mobile phones, smartphones, computers (e.g., workstations, desktop computers, laptopcomputers, mobile computers, tablet computers, or the like), personaldigital assistants, or any other communication device via which users120, 122 can communicate using voice communications. The communicationdevices 110, 112 also may communicate via audio/video communications.

The communication devices 110, 112 can be communicatively linked via oneor more communication networks 130. The communication networks 130 canbe implemented as, or include, any of a variety of different networkssuch as a WAN, a LAN, a wireless network, a mobile network, a VirtualPrivate Network (VPN), the Internet, the Public Switched TelephoneNetwork (PSTN), or the like.

The communication device 110 and, optionally, the communication device112 can be communicatively linked to one or more message storages 140.The message storage(s) 140 can store e-mails, text messages, voicemessages, or messages generated using any other form of communication.As described herein, an e-mail is a form of a message. In onearrangement, the message storage(s) 140 can be provided by servers,network-attached storages (NASs), or any other suitable devices orsystems configured to store message, and the communication devices 110,112 can be communicatively linked to the message storage(s) 140 via thecommunication network(s) 130. For example, the message storage(s) 140can be e-mail servers that store e-mails to suitable computer-readablestorage mediums, messaging servers that store text messages, voicemessaging servers that store voice messages, or the like. In anotherarrangement, the communication device 110 and, optionally, thecommunication device 112 each can comprise one or more messagestorage(s) 140 that store messages locally on the communication devices110, 112 or to locally connected NASs. For example, the messagestorage(s) 140 can be e-mail clients, text messaging clients, voicemessaging clients, or any other communication clients that storee-mails, text messages, voice messages, etc. to a localcomputer-readable storage medium.

The communication device 110 and, optionally, the communication device112 also can be communicatively linked to one or more social networkingsystems 142 via the communication network(s) 130. As used herein, theterm “social networking system” means a system that provides socialnetworking services, for instance via one or more websites. A socialnetworking service is an online service platform on which socialnetworks or social relations are built among people who, for example,share interests, activities, backgrounds or real-life connections. Asocial network service typically comprises a representation of eachuser, often a user profile, his/her social links with other people(i.e., contacts), and a variety of additional services. The socialnetworking system(s) 142 can include one or more computer-readablestorage mediums where user profiles, contacts, and other information isstored. In one arrangement, the social networking systems 142 can beaccessed via delegated access protocols, for example in accordance withthe open standard for authorization (OAuth), though the presentarrangements are no limited in this regard.

The communication network(s) 130 via which the communication devices110, 112 communicate need not be the same communication network(s) 130via which the communication devices 110, 112 communicate with themessage storage(s) 140 and the social networking system(s) 142. Forexample, the communication devices 110, 112 can communicate with oneanother via a PSTN and communicate with the message storage(s) 140 andsocial networking system(s) 142 via the Internet.

The communication device 110 can include a user interface 154 and,optionally, a voice processing module 150, a contact identificationmodule 152 and one or more contact lists 156. In one arrangement, acontact list 156 can be stored in an e-mail client, a text messagingclient, a voice messaging client, contact management software, or thelike executed on the communication device 110. In another arrangement,one or more contact lists 156 can be stored by a server that providese-mail, text messaging, voice messaging and/or contact related servicesto the communication device 110, for example a server that provides themessage storage(s) 140. Further, one or more contact lists 158 can bestored by the social networking system(s) 142. Although the voiceprocessing module 150 and contact identification module 152 may becomponents of the communication device 110, this need not be the case.For example, the voice processing module 150 and/or the contactidentification module 152 may be components of another device or systemcomprising a processor to which the communication device 110 iscommunicatively linked, for example a server.

The voice processing module 150 can perform speech recognition on voicesignals 160 received from the communication device 112 via thecommunication network(s) 130 either during a communication session orafter the communication session is complete. More particularly, thevoice processing module 150 can detect spoken utterances of the user 122of the communication device 112 in the voice signals 160 and, based onthe spoken utterances, identify words, terms and/or phrases spoken bythe user 120 and/or the 122. In illustration, the voice processingmodule 150 can translate spoken words, terms and/or phrases to text, andidentify the words, terms and/or phrases in the translated text.

The voice processing module 150 also can perform voice recognition, alsoknown as speaker recognition, to identify a voice print of the user 122of the communication device 112. As used herein, a voiceprint is a setof measurable characteristics of a human voice that uniquely identifiesan individual. These characteristics, which are based on the physicalconfiguration of a speaker's mouth and throat, can be expressed as amathematical formula. In one arrangement, the voice processing module150 can process a vocal sample contained in the voice signals 160, andcompare that vocal sample to one or more derived mathematical formulas,and/or a graphical representations of the mathematical formulas,previously generated for various contacts contained in the contactlist(s) 156, 158. In another arrangement, the voice processing module150 can process a vocal sample contained in the voice signals 160 togenerate one or more derived mathematical formulas, and/or a graphicalrepresentations of the mathematical formulas, and compare previouslystored voice samples of various contacts to these mathematical formulasand/or graphical representations. Such voice samples can be associatedwith contacts contained in the contact list(s) 156, 158.

Based on the speech recognition and/or voice recognition performed bythe voice processing module 150, the contact identification module 152can identify one or more contacts in the contact list(s) 156 and/or thecontact list(s) 158 that may be the user 122 of the communication device112 who is currently speaking with the user 120 of the communicationdevice 110 in a voice communication session or an audio/videocommunication session. Such identification of the contacts can beimplemented in accordance with any of the various arrangements describedherein.

The voice processing module 150 can process the voice signals 160 inreal time as the voice signals 160 are received by the communicationdevice 110, or process a recording of such voice signals 160. Forexample, the voice signals 160 can be recorded and processed by thevoice processing module 150 when desired to identify contacts who may bethe user 122. As used herein, the term “real time” means a level ofprocessing responsiveness that a user or system senses as sufficientlyimmediate for a particular process or determination to be made, or thatenables the processor to keep up with some external process.

In one arrangement, the voice processing module 150 can identify thecontext of the utterances spoken by the user 120 and/or the user 122,and use this context to identify potential contacts who may be the user122. In illustration, the contact identification module 152 can processinformation generated by the voice processing module 150 using speechrecognition to identify a name, or a portion of a name, contained in thevoice signals 160 and the context of the voice signals 160 to identifyone or more contacts. For example, if the voice signals 160 include aspoken utterance of the name “John” and a spoken utterance of “jobapplication,” the contact identification module 152 can analyzepreviously received messages (e.g., e-mails, text messages, voice,messages, etc.) stored on the communication device 110 and/or e-messagesstored on the message storage(s) 140 to identify messages sent to orreceived from a person named “John,” “Jon,” “Juan,” etc. and/or e-mailsthat in the body of the e-mails refer to named “John,” “Jon,” “Juan,”etc. The contact identification module 152 also can identify any of suchmessages that include the term “job application,” for example in a bodyor subject field of the messages. Based on these messages, the contactidentification module 152 can identify as contacts who potentially maybe the user 122 senders or recipients of such messages and/or peopleidentified in such messages. With regard to people identified in themessages, the contact identification module 152 can identify peoplehaving a name corresponding to a name identified in the messages, anddifferent spellings of names can be considered during this process.

Similarly, if the voice signals 160 include a spoken utterance of thename “John” and a spoken utterance of “job application,” the contactidentification module 152 can analyze posts in one or more socialnetworks hosted by the social networking systems 142 created by, orresponding to, a person named “John,” “Jon,” “Juan,” etc. and/or poststhat in the body of the posts refer to named “John,” “Jon,” “Juan,” etc.The contact identification module 152 also can identify any of suchposts that include the text “job application,” for example in a body orsubject field of the posts. Based on these posts, the contactidentification module 152 can identify as contacts that potentially maybe the user 122 persons providing or receiving such posts and/or peopleidentified in such posts. The contact identification module 152 cangenerate at least one parameter used to determine confidence scores thatindicate a level of confidence that such contacts are the user 122. Withregard to people identified in the posts, the contact identificationmodule 152 can identify people having a name corresponding to a nameidentified in the posts, and different spellings of names can beconsidered during this process.

Moreover, the present arrangements are not limited to identifying userslisted in the contact lists 156, 158. For example, if the user 122utters the word “John,” the contact identification module 152 can searchfor contacts named “John” not only in contact lists of the user, butalso in contact lists of contacts listed in the contact list(s) 156, 158of the user. For example, if the user 120 has a contact named “Jane,”Jane's contact lists can be searched to identify the potential contactsif Jane's contact list(s) are available to the contact identificationmodule 152. In illustration, if the user 122 utters “this is John, afriend of Jane,” the contact identification module 152 can identify thisphrase and, based on this phrase, search in Jane's contact list(s)contacts who have a name including the word “John,” especially contactsJane has identified as being friends since the user 122 has indicatedthat he/she is a friend of “Jane.” In addition, the telephone numberprovided by a conventional caller ID function can be processed, inaddition to spoken utterances, to identify contacts.

The time messages are sent and/or posts in the social network(s) arecreated also can be considered when determining the contacts whopotentially may be the user 122. For example, if the messages and/orposts are generated during working hours, the contact identificationmodule 152 can focus on contacts that are related to the user 120 viabusiness relationships. For example the contact identification module152 can focus on contacts that sent, received or are identified in themessages and/or posts generated during normal business hourscorresponding persons generating the messages and/or posts. In thisregard, the voice signals 160 can be partially filtered based on thetime the voice communication takes place and/or the content identifiedin the voice signals 160 and/or voice signals generated by the user 120.Such filtering may be implemented for example, to provide privacy orsecurity. Nonetheless, the time messages are sent and/or posts in thesocial network(s) are created can be processed to create at least oneparameter used to determine confidence scores that such contacts are theuser 122. For example, more recent messages and/or posts can be givengreater weight than older messages and/or posts when identifyingpotential contacts and when generating at least one parameter used todetermine confidence scores to the potential contacts.

Further, information, such as a user profile, location and otherbackground information related to contacts identified in the contactlists 156, 158 can be considered when determining the contacts whopotentially may be the second user 122. For example, the contactidentification module 152 can identify user profiles (including personalinformation), mutual acquaintances, employer company names, telephonenumbers, or other information of contacts contained in the contactlist(s) 156, 158 to identify contacts having similar user profilesand/or information, and process such information to generate at leastone parameter used to determine confidence scores that such contacts arethe user 122.

Similarly, location information, such as telephone numbers, area codes,GPS coordinates, addresses, etc. identified in the voice signals 160, orother information received by the communication device 110 regarding thecommunication device (e.g., a caller ID), can be processed by thecontact identification module 152 to identify contacts contained in thecontact list(s) 156, 158 having a location similar to the user 120and/or a location similar to location information contained in one ormore messages contained in the message storage(s) 140. The results ofsuch processing also can be used to generate at least one parameter usedto determine confidence scores that such contacts are the user 122.

In one aspect, the contact identification module 152 can identifycontacts whose voice prints (i.e., voice print data) may match the voiceprint of the user 122, and eliminate from consideration as potentialcontacts those contacts having voice prints that do not at leastpartially match the voice print of the user 122. For the contacts whosevoice prints may at least partially match the voice print of the user122, the similarity between such voice prints to the voice print of theuser 122 determined by processing the voice signals 160 can beidentified to generate at least one parameter used to generate theconfidence score for the respective contacts. The confidence scores maybe percentile scores, but the present arrangements are not limited inthis regard. Further, the contact identification module 152 can processvoice prints to specifically exclude candidate matches. For example,when a plurality of potential contacts are identified based on otherinformation, and there is a high level of certainty that the voice printof the user 122 does not match the voice print(s) of one or more of thepotential contacts, those potential contacts need not be presented inthe list of contacts who potentially may be the second user 122.

In one arrangement, the contact identification module 152 can considerthe distance between the user 120 and potential contacts identified inthe social networking system(s) 142 to generate at least one parameterused to generate the confidence score for the respective contacts. Forexample, if a particular contact is contained in the contact list 158, aparticular parameter can be generated for that contact. That parametercan be based, at least in part, on the level of association between thecontact contained in the contact list 158 and the user 120, for examplehow frequently that contact and the user 120 communicate, whether thework for the same company, whether they have common interests, etc.Further, if the communication takes place during work hours and/orutters a word, term or phrase that indicates the place of employment ofthe first user 120, contacts contained in contact list(s) 158 associatedwith professional social networks can be assigned parameters withgreater weight than parameters assigned to contacts contained in contactlist(s) of other social networks. For instance, if the user 120 is anemployee of IBM, parameters assigned to potential contacts identified in“IBM SmartCloud™” can be assigned greater weight than parametersassigned to potential contacts in other social networks.

If a particular contact is not contained in the contact list 158, but isa direct contact of a contact contained in the contact list 158, adifferent parameter can be generated for that particular contact. Thatparameter can be based, at least in part, on the level of associationbetween the contact contained in the contact list 158 and the user 120.If a particular contact is not contained in the contact list 158, but isan indirect contact of a contact contained in the contact list 158,another different parameter can be generated for that particularcontact. In this regard, at least one parameter assigned to anyparticular potential contact can be based on the distance between theparticular contact and the user 120 in the social network and/or anyacquaintances, if any, between the particular contact and the user 120in the social network

The user interface 154 can present one or more user selectable items,for example items in a preferences menu, for the user 120 to enable ordisable identification of other users (e.g., the user 122), specifyparticular message accounts and/or particular social networks to be usedfor user identification, and the like.

Moreover, the contact identification module 152 can generate aconfidence score, based on one or more of the parameters describedherein, for each of the respective contacts. The confidence score foreach respective contact can indicate a level of confidence that therespective contact is the user 122. The user interface 154 can presentthe potential contacts and the respective contacts to the user 120, forexample via a suitable display.

In some instances, the communication device 110 and/or the communicationdevice 110 may be configured to indicate that the voice signals 160and/or voice signals generated by the communication device 120 may notbe recorded or electronically analyzed, for example via one or more usersettings. In such instances, the location information, backgroundinformation, etc., obtained in accordance with any of the arrangementsdescribed herein, exclusive of processing the voice signals, can beprocessed to identify contacts who potentially may be the user 122without recording or electronically analyzing the voice signals.

FIG. 2 depicts views 200, 250 presented by the user interface 154 on thecommunication device 110 in accordance with one embodiment disclosedwithin this specification. The views 200, 250 may be presented on adisplay of the communication device 110. If one or more of the views200, 250 are too large to fit on the display in their entirety, the user120 can be provided an option to scroll through the views 200, 250, asis known to those skilled in the art. Further, if the communicationdevice 110 is a smart phone, the display can be turned off when the userinterface 154 detects that the display is positioned immediatelyproximate to the user (e.g., while talking), also as known to thoseskilled in the art.

Responsive to the contact identification module 152 identifying one ormore contacts who potentially may be the user 122, the user interface254 can present the view 200. The view 200 can present a list of names210, 212, 214, 216, 218, 220 for each of the contacts identified aspotentially being the user 122. Further, when one or more images areavailable for the respective contacts, the user interface 254 canpresent such images with the names. For example, for the contact “JohnD,” the user interface can present an image 230. The user interface 254also can present the confidence score 240, 242, 244, 246, 248, 250determined for each potential contact, for example proximate to therespective names 210-220, based on the confidence parameters describedherein. In one arrangement, the names of the contacts presented in thelist can be the names of contacts having an associated confidence scoreabove a particular threshold value.

Notably, processing of the contact information described herein can beperformed in real time when a voice communication session, e.g., a phonecall, is established. Accordingly, the view 200 can be presented to theuser 120 at the beginning of the voice communication session, or at anytime during the voice communication session or after the voicecommunication session is complete. Even if the view 200 is presented atthe beginning of the voice communication session, as the voiceprocessing module 150 continually gathers additional data from the voicesignals 160, the list of names 210-220 presented in the view 200 and theconfidence scores 240-250 can be dynamically updated based on theadditional data. In another arrangement, the voice processing module 150may be configured only to process voice signals 160 from a certainportion of the voice communication session, for example during a firstportion of the voice communication session.

From the view 200, the user 120 can select at least one name presentedin the view 200 corresponding to a contact who potentially may be theuser 122. In response, the contact identification module 152 can promptthe user to indicate whether the user 120 desires to add the selectedcontact to one or more of the contact lists 156, 158. If the userchooses to do so, the contact identification module 152 can add theselected contact to one or more of the contact lists 156, 158. In onearrangement, the user 120 can specify which contact lists 156, 158 inwhich the selected contact is to be added.

Further, in response to the user selecting at least one name presentedin the view 200 corresponding to a contact who potentially may be theuser 122, the user interface 154 can present the view 250 indicatingsocial networks 260, 262, 264, 266 in which the selected contactparticipates. The user 120 can be prompted to indicate whether the user120 desires to add the selected contact in one or more of the socialnetworks 260, 262, 264, 266 as a contact of the user 120 or as a contactthe user 120 chooses to follow in the social network(s) 260-266.

In one aspect, the user interface 154 can receive from the user 120voice commands entering the various user inputs described herein. Inillustration, the voice processing module 150 can process spokenutterances provided by the user 120, and cooperate with the userinterface 154 for the user interface to interpret such spoken utterancesas user inputs. The user interface 154 also can be configured to detectgestures and other user inputs, and processing such user inputs asdescribed herein.

Referring again to FIG. 1, the present arrangements also can be appliedto conference calls to distinguish multiple callers on the call. Inillustration, the voice processing module 150 can identify voice printsof respective users participating in the conference call. The voiceprints can be processed, for example as previously described, todifferentiate users. Spoken utterances can be processed by the voiceprocessing module 150 to associate each speaker in the conference callwith a list of potential contacts. Accordingly, the present arrangementscan provide a list indicating contacts who potentially may be usersparticipating in the conference call based on the voice signalsgenerated during the conference call. At least a portion of such voicesignals may include the voice signals 160.

FIG. 3 is a flow chart illustrating a method 300 of identifying acontact based on an incoming call in accordance with another embodimentdisclosed within this specification. At step 302, a voice communicationsession established between a first communication device and a secondcommunication device can be identified. At step 304, via a processor,voice processing can be performed on voice signals generated by at leasta second user using the second communication device to identify at leastone utterance spoken by the second user.

At step 306, based at least on the utterance spoken by the second user,a plurality of contacts who potentially may be the second user can beidentified. In one arrangement, a voice print of the second user can bedetected based on the at least one utterance spoken by the user.Identifying the plurality of contacts who potentially may be the seconduser can include comparing the detected voice print to voice print dataassociated with at least one of the plurality of contacts.

In another arrangement, the at least one spoken utterance can beidentified as being a name. A social networking system can be queriedfor information of users of the social networking system who match thename. Identifying the plurality of contacts who potentially may be thesecond user can include receiving from the social networking system theinformation of the users of the social networking system who match thename and analyzing such information.

In another arrangement, previously received messages can be analyzed toidentify at least one message that includes at least one written wordcorrelating to the at least one utterance spoken by the second user. Forexample, content contained in respective bodies or subject lines of thepreviously received messages can be analyzed. A sender or receiver ofthe at least one message can be identified as a contact who potentiallymay be the second user.

Further, a confidence score can be generated for each of the respectivecontacts. The confidence score can be generated, for example, based atleast on contact information of the respective contacts identified aspotentially being the second user, subject lines and/or contact ofmessages, results of one or more voice print comparisons, etc. Theconfidence score for each respective contact can indicate a level ofconfidence that the respective contact is the second user.

At step 308, a list including at least a name of each of the pluralityof contacts who potentially may be the second user can be presented tothe first user. The contacts can be ranked in the list according to theconfidence score. In one non-limiting arrangement, the plurality ofcontacts presented in the list can be those contacts having anassociated confidence score above a particular threshold value.

At step 310, a selection of at least one name from the list can bereceived from the first user. At step 312, responsive to receiving theselection of the at least one name, the first user can be prompted toindicate whether the first user desires to have the contactcorresponding to the selected name added to a contact list of the firstuser and/or whether the first user desires to contact with, or follow,the contact corresponding to the selected name in a social network. Atstep 314, responsive to receiving from the first user a user inputindicating that the first user desires to have the contact correspondingto the selected name added to the contact list of the first user and/orthat the first user desires to contact with, or follow, the contactcorresponding to the selected name in the social network, the contactcorresponding to the selected name can be added to the contact list ofthe first user, for example a contact list maintained in an messageclient, message server, contact management system, etc., and/or thecontact corresponding to the selected name can be added to a contactlist of the first user in the social network.

FIG. 4 is a block diagram of the communication device 110 of FIG. 1 inaccordance with one embodiment disclosed within this specification. Thecommunication device 110 can include at least one processor 405 (e.g., acentral processing unit) coupled to memory elements 410 through a systembus 415 or other suitable circuitry. As such, the communication device110 can store program code within the memory elements 410. The processor405 can execute the program code accessed from the memory elements 410via the system bus 415. It should be appreciated that the communicationdevice 110 can be implemented in the form of any system including aprocessor and memory that is capable of performing the functions and/oroperations described within this specification. For example, thecommunication device 110 can be implemented as a computer, aworkstation, a mobile computer, a laptop computer, tablet computer, asmart phone, a personal digital assistant, a gaming device, anappliance, and so on.

The memory elements 410 can include one or more physical memory devicessuch as, for example, local memory 420 and one or more bulk storagedevices 425. Local memory 420 refers to RAM or other non-persistentmemory device(s) generally used during actual execution of the programcode. The bulk storage device(s) 425 can be implemented as a hard diskdrive (HDD), solid state drive (SSD), or other persistent data storagedevice. The communication device 110 also can include one or more cachememories (not shown) that provide temporary storage of at least someprogram code in order to reduce the number of times program code must beretrieved from the bulk storage device 425 during execution.

Input/output (I/O) devices such as a display 430, a pointing device 435and, optionally, a keyboard 440 can be coupled to the communicationdevice 110. The I/O devices can be coupled to the communication device110 either directly or through intervening I/O controllers. For example,the display 430 can be coupled to the communication device 110 via agraphics processing unit (GPU), which may be a component of theprocessor 405 or a discrete device. One or more network adapters 445also can be coupled to communication device 110 to enable communicationdevice 110 to become coupled to other systems, computer systems,communication devices, remote printers, and/or remote storage devicesthrough intervening private or public networks. Modems, cable modems,transceivers, and Ethernet cards are examples of different types ofnetwork adapters 445 that can be used with communication device 110.

As pictured in FIG. 4, the memory elements 410 can store the componentsof the communication device 110, namely the user interface 154 and,optionally, the voice processing module 150, the contact identificationmodule 152 and one or more contact lists 156. Being implemented in theform of executable program code, the user interface 154 and, optionally,the voice processing module 150 and the contact identification module152 can be executed by the communication device 110 and, as such, can beconsidered part of the communication device 110. Moreover, the userinterface 154, the voice processing module 150, the contactidentification module 152 and contact list(s) 156 are functional datastructures that impart functionality when employed as part of thecommunication device 110 of FIGS. 1 and 4.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a,” “an,” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “includes,”“including,” “comprises,” and/or “comprising,” when used in thisspecification, specify the presence of stated features, integers, steps,operations, elements, and/or components, but do not preclude thepresence or addition of one or more other features, integers, steps,operations, elements, components, and/or groups thereof.

Reference throughout this specification to “one embodiment,” “anembodiment,” or similar language means that a particular feature,structure, or characteristic described in connection with the embodimentis included in at least one embodiment disclosed within thisspecification. Thus, appearances of the phrases “in one embodiment,” “inan embodiment,” and similar language throughout this specification may,but do not necessarily, all refer to the same embodiment.

The term “plurality,” as used herein, is defined as two or more thantwo. The term “another,” as used herein, is defined as at least a secondor more. The term “coupled,” as used herein, is defined as connected,whether directly without any intervening elements or indirectly with oneor more intervening elements, unless otherwise indicated. Two elementsalso can be coupled mechanically, electrically, or communicativelylinked through a communication channel, pathway, network, or system. Theterm “and/or” as used herein refers to and encompasses any and allpossible combinations of one or more of the associated listed items. Itwill also be understood that, although the terms first, second, etc. maybe used herein to describe various elements, these elements should notbe limited by these terms, as these terms are only used to distinguishone element from another unless stated otherwise or the contextindicates otherwise.

The term “if” may be construed to mean “when” or “upon” or “in responseto determining” or “in response to detecting,” depending on the context.Similarly, the phrase “if it is determined” or “if [a stated conditionor event] is detected” may be construed to mean “upon determining” or“in response to determining” or “upon detecting [the stated condition orevent]” or “in response to detecting [the stated condition or event],”depending on the context.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the embodiments disclosed within this specification havebeen presented for purposes of illustration and description, but are notintended to be exhaustive or limited to the form disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of theembodiments of the invention. The embodiments were chosen and describedin order to best explain the principles of the invention and thepractical application, and to enable others of ordinary skill in the artto understand the inventive arrangements for various embodiments withvarious modifications as are suited to the particular use contemplated.

What is claimed is:
 1. A computer program product comprising acomputer-readable storage medium having program code stored thereon, theprogram code executable by a processor to perform a method comprising:identifying, by the processor, a voice communication session establishedbetween a first communication device and a second communication device;based on the voice communication session established between the firstcommunication device and the second communication device, identifying,by the processor, a plurality of contacts who potentially is a seconduser by performing voice processing on voice signals generated by atleast the second user using the second communication device to identifyat least one utterance spoken by the second user and analyzing the atleast one utterance spoken by the second user, identifying the at leastone spoken utterance as being a name, querying a social networkingsystem for information of users of the social networking system whomatch the name, and receiving from the social networking system theinformation of the users of the social networking system who match thename; and presenting, by the processor, to a first user using the firstcommunication device a list including at least a name of each of theplurality of contacts who potentially is the second user.
 2. Thecomputer program product of claim 1, the method further comprising:analyzing at least the utterance spoken by the first user and each ofthe contacts who potentially is the second user to generate a confidencescore for each of the respective contacts, the confidence score for eachrespective contact indicating a level of confidence that the respectivecontact is the second user.
 3. The computer program product of claim 2,the method further comprising: ranking the respective contacts accordingto the confidence score in the list including the plurality of contactswho potentially is the second user.
 4. The computer program product ofclaim 1, the method further comprising: detecting a voice print of thesecond user based on the at least one utterance spoken by the user;wherein identifying the plurality of contacts who potentially is be thesecond user comprises comparing the detected voice print to voice printdata associated with at least one of the plurality of contacts.
 5. Thecomputer program product of claim 1, wherein identifying the pluralityof contacts who potentially is the second user further comprises:analyzing contact information of the users of the social networkingsystem who match the name; the method further comprising: generating aconfidence score for each of the respective contacts based at least onthe contact information.
 6. The computer program product of claim 1, themethod further comprising: based on the communication session,identifying a location information associated with the second user;wherein identifying the plurality of contacts who potentially is thesecond user comprises identifying contacts associated with the locationinformation.
 7. The computer program product of claim 1, the methodfurther comprising: receiving from the first user a selection of atleast one name from the list including the name of each of the pluralityof contacts who potentially is the second user; responsive to receivingthe selection of the at least one name, prompting the first user toindicate whether the first user desires to have the contactcorresponding to the selected name added to a contact list of the firstuser; and responsive to receiving from the first user a user inputindicating that the first user desires to have the contact correspondingto the selected name added to the contact list of the first user, addingthe contact corresponding to the selected name to the contact list ofthe first user.
 8. A computer program product comprising acomputer-readable storage medium having program code stored thereon, theprogram code executable by a processor to perform a method comprising:identifying, by the processor, a voice communication session establishedbetween a first communication device and a second communication device;based on the voice communication session established between the firstcommunication device and the second communication device, identifying,by the processor, a plurality of contacts who potentially is a seconduser by performing voice processing on voice signals generated by atleast the second user using the second communication device to identifyat least one utterance spoken by the second user and analyzing the atleast one utterance spoken by the second user, analyzing, by theprocessor, previously received messages to identify at least one messagethat includes at least one written word correlating to the at least oneutterance spoken by the second user, and identifying, by the processor,a sender or receiver of the at least one message as a contact whopotentially is the second user; and presenting, by the processor, to afirst user using the first communication device a list including atleast a name of each of the plurality of contacts who potentially is thesecond user.
 9. The computer program product of claim 8, whereinanalyzing the previously received messages to identify the at least onemessage that includes at least one written word correlating to the atleast one utterance spoken by the second user comprises: analyzingcontent contained in respective bodies or subject lines of thepreviously received messages.
 10. A computer program product comprisinga computer-readable storage medium having program code stored thereon,the program code executable by a processor to perform a methodcomprising: identifying, by the processor, a voice communication sessionestablished between a first communication device and a secondcommunication device; based on the voice communication sessionestablished between the first communication device and the secondcommunication device, identifying, by the processor, a plurality ofcontacts who potentially is a second user; presenting, by the processor,to a first user using the first communication device a list including atleast a name of each of the plurality of contacts who potentially is thesecond user; receiving, by the processor, from the first user aselection of at least one name from the list including at least the nameof each of the plurality of contacts who potentially is the second user;responsive to receiving the selection of the at least one name,prompting, by the processor, the first user to indicate whether thefirst user desires to contact with, or follow, the contact correspondingto the selected name in a social networking system; and responsive toreceiving from the first user a user input indicating that the firstuser desires to contact with, or follow, the contact corresponding tothe selected name in the social networking system, adding, by theprocessor, the contact corresponding to the selected name to a contactlist of the first user in the social networking system.